import { http, formDataHttp } from '../http';
import type {
	SetAIASConfigParamsType,
	GetAiAutomaticAnalysisParamsType,
	GetAiAutomaticAnalysisResponseType,
	BatchAddAiAutomaticAnalysisParamsType,
	GetLessonPageForManageParamsType,
	GetLessonPageForManageResponseType,
	OpenAILessonTaskParamsType,
	GetAILessonTaskProgressResponseType,
	GetResourceByLessonCodeResponseType,
	GetCheckRoomListParamsType,
	GetCheckRoomListResponseType
} from './analysis-task-manage.type';

const tsmsUrl = '/api/tsms';
const rmsUrl = '/api/rms';
const aiasUrl = '/api/aias';

/**
 * @description 设置AI分析模式
 * @param {number} params.isAutoAI 是否开启自动分析课堂 0：否 1：是
 */
export const setAIASConfigAPI = <T>(params: SetAIASConfigParamsType): Promise<T> => {
	return http.post(`${aiasUrl}/config/setAIASConfig`, params);
};

/**
 * @description 获取教室自动分析列表
 * @param {int} params.businessType 业务类型（1教室 2课程）
 */
export const getAiAutomaticAnalysisAPI = (
	params: GetAiAutomaticAnalysisParamsType
): Promise<GetAiAutomaticAnalysisResponseType> => {
	return http.get(`${aiasUrl}/config/getAiAutomaticAnalysis`, { params });
};

/**
 * @description 批量添加自动分析配置信息
 * @param {int} params.businessType 业务类型（1教室 2课程）
 * @param {string[]} params.businessCodes 业务编码
 */
export const batchAddAiAutomaticAnalysisAPI = <T>(
	params: BatchAddAiAutomaticAnalysisParamsType
): Promise<T> => {
	return http.post(`${aiasUrl}/config/batchAddAiAutomaticAnalysis`, params);
};

/**
 * @description 查询课堂列表（包含AI分析状态）
 * @param {string} params.termCode 学期编号
 * @param {string} params.academyCode 学院编号
 * @param {string} params.searchValue 课程名称或课程编号或老师姓名或老师编号
 * @param {string} params.campusCode 校区编号
 * @param {string} params.buildingCode 教学楼编号
 * @param {string} params.roomCode 教室编号
 * @param {int} params.beginTime 分析开始时间
 * @param {int} params.endTime 分析结束时间
 * @param {int} params.aiLessonTaskStatus AI分析总状态 0:未开始 11:排队中 1:进行中 2:已结束 3:已结束，有异常
 * @param {int} params.pageNum 查询第几页（不传默认查第一页）
 * @param {int} params.pageSize 每页展示的数量（不传默认每页查询20条）
 */
export const getLessonPageForManageAPI = (
	params: GetLessonPageForManageParamsType
): Promise<GetLessonPageForManageResponseType> => {
	return http.post(`${aiasUrl}/lesson/getLessonPageForManage`, params);
};

/**
 * @description 删除课堂报告
 * @param {string} params.lessonCodes 课堂编号,逗号分隔
 */
export const delLessonReportAPI = <T>(params: { lessonCodes: string }): Promise<T> => {
	return http.post(`${aiasUrl}/lesson/delLessonReport`, params);
};

/**
 * @description 开启AI分析任务
 * @param {string[]} params.lessonCodeList 课堂编号列表
 * @param {string} params.type 任务类型
 * @param {string[]} params.llmNodeTypes LLM节点类型列表
 */
export const openAILessonTaskAPI = <T>(params: OpenAILessonTaskParamsType): Promise<T> => {
	return http.post(`${aiasUrl}/lesson/openAILessonTask`, params);
};

/**
 * @description 查询指定课堂AI分析任务进度详情
 * @param {string} params.lessonCode 课堂编号
 */
export const getAILessonTaskProgressAPI = (params: {
	lessonCode: string;
}): Promise<GetAILessonTaskProgressResponseType> => {
	return http.post(`${aiasUrl}/lesson/getAILessonTaskProgress`, params);
};

/**
 * @description: 查询课堂或直播活动的录制任务的详情
 * @param {string} lessonCode 课堂编号
 * @param {boolean} is404 是否404
 */
export const getResourceByLessonCodeAPI = (
	lessonCode: string,
	is404: boolean
): Promise<GetResourceByLessonCodeResponseType> => {
	if (is404) {
		return formDataHttp.post(`${tsmsUrl}/recordManage/getRecordTaskByBusinessCode`, {
			businessCode: lessonCode
		});
	}
	return formDataHttp.post(`${rmsUrl}/lesson/getResourceByLessonCode`, {
		lessonCode
	});
};

/**
 * @description 教室监管查询
 * @param {string} params.buildingCode 教学楼编码
 * @param {string} params.buildingFloorNo 楼层号
 * @param {number | null} params.type 类型
 * @param {string} params.name 教室名称
 * @param {string} params.roomTypeId 教室类型ID
 */
export const getCheckRoomListAPI = (
	params: GetCheckRoomListParamsType
): Promise<GetCheckRoomListResponseType> => {
	return http.post(`${tsmsUrl}/roomManage/getCheckRoomList`, params);
};
